<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>Redis下载安装 | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>Redis下载安装</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Redis/">Redis</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;redis是一个key-value存储系统，<a href="http://redis.io" target="_blank" rel="external">官方站点</a></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;和memcached类似，但支持数据持久化</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;支持更多value类型，除了和string外，还支持hash、lists（链表）、sets（集合）和sorted sets（有序集合）几种数据类型</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;redis使用了两种文件格式：全量数据（RDB）和增量请求（aof)。全量数据格式是 把内存中的数据写入磁盘，便于下次读取文件进行加载。增量请求文件则是把内存中的 数据序列化为操作请求，用于读取文件进行replay得到数据redis的存储分为内存存储、    磁盘存储和log文件三部分</p>
<h2 id="1-redis-安装"><a href="#1-redis-安装" class="headerlink" title="1.redis 安装"></a>1.redis 安装</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="http://redis.io/download" target="_blank" rel="external">官网下载地址</a></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下载 redis</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># wget http://download.redis.io/releases/redis-3.2.8.tar.gz</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;解压</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># tar zxvf redis-3.2.8.tar.gz</span></div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># cd redis-3.2.8</span></div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis redis-3.2.8]<span class="comment"># yum install -y gcc epel-release</span></div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis redis-3.2.8]<span class="comment"># yum install -y jemalloc-devel</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;编译</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis redis-3.2.8]<span class="comment"># make</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果出错，运行如下命令：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@redis redis-3.2.8]<span class="comment"># cd deps/</span></div><div class="line">[root@redis deps]<span class="comment"># make hiredis lua jemalloc linenoise/</span></div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@redis deps]<span class="comment"># cd ..</span></div><div class="line">[root@redis redis-3.2.8]<span class="comment"># make</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;安装</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis redis-3.2.8]<span class="comment"># make PREFIX=/usr/local/redis install</span></div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis redis-3.2.8]<span class="comment"># mkdir /usr/local/redis/etc</span></div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># wget http://www.apelearn.com/study_v2/.redis_conf -O /usr/local/redis/etc/redis.conf 2&gt;/dev/null</span></div></pre></td></tr></table></figure>
<h3 id="redis-启动脚本"><a href="#redis-启动脚本" class="headerlink" title="redis 启动脚本"></a>redis 启动脚本</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># wget http://www.apelearn.com/study_v2/.redis_init -O /etc/init.d/redis 2&gt;/dev/null</span></div></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># useradd -s /sbin/nologin redis</span></div><div class="line">[root@redis ~]<span class="comment"># mkdir /usr/local/redis/var</span></div><div class="line">[root@redis ~]<span class="comment"># chmod 777 /usr/local/redis/var</span></div><div class="line">[root@redis ~]<span class="comment"># chmod 755 /etc/init.d/redis</span></div><div class="line">[root@redis ~]<span class="comment"># chkconfig --add redis</span></div><div class="line">[root@redis ~]<span class="comment"># chkconfig redis on</span></div><div class="line">[root@redis ~]<span class="comment"># service redis start</span></div><div class="line">启动 ：                              [确定]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="https://hcldirgit.github.io/2017/08/25/Redis/24.%20redis%20%E9%85%8D%E7%BD%AE/" target="_blank" rel="external">redis 配置</a></p>
<h2 id="2-redis-数据结构"><a href="#2-redis-数据结构" class="headerlink" title="2.redis 数据结构"></a>2.redis 数据结构</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="https://hcldirgit.github.io/2017/08/25/Redis/25.%20Redis%20%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/" target="_blank" rel="external">Redis 数据类型</a></p>
<h3 id="redis-数据类型-string"><a href="#redis-数据类型-string" class="headerlink" title="redis 数据类型 - string"></a>redis 数据类型 - string</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;string是最简单的类型，你可以理解成与Memcached一样的类型，一个key对应一个value，其上支持的操作与Memcached的操作类似，它的功能更丰富。设置可以存二进制的对象。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;示例：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;首先</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># alias redis-cli='/usr/local/redis/bin/redis-cli'</span></div><div class="line">[root@redis ~]<span class="comment"># vim .bashrc</span></div></pre></td></tr></table></figure>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/01.png?raw=true" alt="01"><figcaption class="figure__caption">01</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样就可以直接使用 redis-cli 命令，或者编辑 profile </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># redis-cli set mykey "yanyi.com"</span></div></pre></td></tr></table></figure>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/02.png?raw=true" alt="02"><figcaption class="figure__caption">02</figcaption></figure></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># redis-cli get mykey</span></div></pre></td></tr></table></figure>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/03.png?raw=true" alt="03"><figcaption class="figure__caption">03</figcaption></figure></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@redis ~]<span class="comment"># redis-cli</span></div></pre></td></tr></table></figure>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/04.png?raw=true" alt="04"><figcaption class="figure__caption">04</figcaption></figure></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">127.0.0.1:6379&gt; mset key1 1 key2 a key3 c </div><div class="line">OK</div><div class="line">127.0.0.1:6379&gt; mget key1 key2 key3</div><div class="line">1) <span class="string">"1"</span></div><div class="line">2) <span class="string">"a"</span></div><div class="line">3) <span class="string">"c"</span></div></pre></td></tr></table></figure>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/05.png?raw=true" alt="05"><figcaption class="figure__caption">05</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="https://hcldirgit.github.io/2017/08/24/Redis/18.%20Redis%20%E5%AD%97%E7%AC%A6%E4%B8%B2(String" target="_blank" rel="external">Redis 字符串(String)</a>/)</p>
<h3 id="redis-数据类型-list"><a href="#redis-数据类型-list" class="headerlink" title="redis 数据类型 - list"></a>redis 数据类型 - list</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;list是一个链表结构，主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。使用 List 结构，我们可以轻松地实现最新消息排行等功能（比如新浪微博的 TimeLine ）。list 的另一个应用就是消息队列，可以利用 list 的 push操作，将任务存在 list 中，然后工作线程再用pop操作将任务取出进行执行。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;示例：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/06.png?raw=true" alt="06"><figcaption class="figure__caption">06</figcaption></figure></p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/07.png?raw=true" alt="07"><figcaption class="figure__caption">07</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="https://hcldirgit.github.io/2017/08/24/Redis/20.%20Redis%20%E5%88%97%E8%A1%A8(List" target="_blank" rel="external">Redis 列表(List)</a>/)</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注： <a href="https://hcldirgit.github.io/2017/08/24/Redis/7.%20Redis%20list%20%E4%B9%8B%E5%A2%9E%E5%88%A0%E6%94%B9%E6%9F%A5/" target="_blank" rel="external">Redis list 之增删改查</a></p>
<h3 id="redis-数据类型-set"><a href="#redis-数据类型-set" class="headerlink" title="redis 数据类型 - set"></a>redis 数据类型 - set</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set是集合，和我们数学中的集合概念相似，对集合的操作有添加删除元素，有对多个集合求交并差等操作。操作中key理解为集合的名字。比如在微博应用中，可以将一个用户所有的关注人存在一个集合中，将其所有粉丝存在一个集合。因为 Redis 非常人性化的为集合提供了求交集、并集、差集等操作，那么就可以非常方便的实现如共同关注、共同喜好、二度好友等功能，对上面的所有集合操作，你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。QQ有一个社交功能叫做“好友标签”，大家可以给你的好友贴标签，比如“大美女”、“土豪”、“欧巴”等等，这时就可以使用redis的集合来实现，把每一个用户的标签都存储在一个集合之中。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/08.png?raw=true" alt="08"><figcaption class="figure__caption">08</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="https://hcldirgit.github.io/2017/08/24/Redis/21.%20Redis%20%E9%9B%86%E5%90%88(Set" target="_blank" rel="external">Redis 集合(Set)</a>/)</p>
<h3 id="redis-数据类型-sort-set"><a href="#redis-数据类型-sort-set" class="headerlink" title="redis 数据类型 - sort set"></a>redis 数据类型 - sort set</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sorted set是有序集合，它比set多了一个权重参数score，使得集合中的元素能够按 score 进行有序排列，比如一个存储全班同学成绩的 Sorted Sets，其集合 value 可以是同学的学号，而 score 就可以是其考试得分，这样在数据插入集合的时候，就已经进行了天然的排序。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/09.png?raw=true" alt="09"><figcaption class="figure__caption">09</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;倒序 </p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/10.png?raw=true" alt="10"><figcaption class="figure__caption">10</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="https://hcldirgit.github.io/2017/08/24/Redis/22.%20Redis%20%E6%9C%89%E5%BA%8F%E9%9B%86%E5%90%88(sorted%20set" target="_blank" rel="external">Redis 有序集合(sorted set)</a>/)</p>
<h3 id="redis-数据类型-hash"><a href="#redis-数据类型-hash" class="headerlink" title="redis 数据类型 - hash"></a>redis 数据类型 - hash</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在 Memcached 中，我们经常将一些结构化的信息打包成 hashmap，在客户端序列化后存储为一个字符串的值（一般是 JSON 格式），比如用户的昵称、年龄、性别、积分等。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/redis%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85/11.png?raw=true" alt="11"><figcaption class="figure__caption">11</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<a href="https://hcldirgit.github.io/2017/08/24/Redis/19.%20Redis%20%E5%93%88%E5%B8%8C(Hash" target="_blank" rel="external">Redis 哈希(Hash)</a>/)</p>
<h2 id="3-redis持久化"><a href="#3-redis持久化" class="headerlink" title="3.redis持久化"></a>3.redis持久化</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Redis提供了两种持久化的方式，分别是RDB（Redis DataBase）和AOF（Append Only File）。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RDB，简而言之，就是在不同的时间点，将redis存储的数据生成快照并存储到磁盘等介质上。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;AOF，则是换了一个角度来实现持久化，那就是将redis执行过的所有写指令记录下来，在下次redis重新启动时，只要把这些写指令从前到后再重复执行一遍，就可以实现数据恢复了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其实RDB和AOF两种方式也可以同时使用，在这种情况下，如果redis重启的话，则会优先采用AOF方式来进行数据恢复，这是因为AOF方式的数据恢复完整度更高。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果你没有数据持久化的需求，也完全可以关闭RDB和AOF方式，这样的话，redis将变成一个纯内存数据库，就像memcache一样。</p>

	

	
		<span class="different-posts"><a href="/2017/10/12/Redis/1. Redis下载安装/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
